package com.qinggeng.project.system.service;

import com.qinggeng.common.enums.UserConsumeEnum;
import com.qinggeng.project.system.domain.UserWallet;

import java.math.BigDecimal;
import java.util.List;

/**
 * 用户钱包Service接口
 *
 * @author qinggeng
 * @date 2020-06-26
 */
public interface IUserWalletService
{
    /**
     * 查询用户钱包
     *
     * @param walletId 用户钱包ID
     * @return 用户钱包
     */
    public UserWallet selectUserWalletById(Long walletId);

    /**
     * 查询用户钱包列表
     *
     * @param userWallet 用户钱包
     * @return 用户钱包集合
     */
    public List<UserWallet> selectUserWalletList(UserWallet userWallet);

    /**
     * 新增用户钱包
     *
     * @param userWallet 用户钱包
     * @return 结果
     */
    public int insertUserWallet(UserWallet userWallet);

    /**
     * 修改用户钱包
     *
     * @param userWallet 用户钱包
     * @return 结果
     */
    public int updateUserWallet(UserWallet userWallet);

    /**
     * 批量删除用户钱包
     *
     * @param walletIds 需要删除的用户钱包ID
     * @return 结果
     */
    public int deleteUserWalletByIds(Long[] walletIds);

    /**
     * 删除用户钱包信息
     *
     * @param walletId 用户钱包ID
     * @return 结果
     */
    public int deleteUserWalletById(Long walletId);

    /**
     * 更具用户ID获取钱包数据
     * @param userId
     * @return
     */
    UserWallet selectUserWalletByUserId(Long userId);

    /**
     * 添加钱包
     * @param userId
     * @param price
     * @param ordersId
     * @param enumType
     * @return
     */
    int addWallet(Long userId, BigDecimal price, Long ordersId, UserConsumeEnum enumType);

    /**
     * 扣除钱包
     * @param userId
     * @param price
     * @param ordersId
     * @param enumType
     * @return
     */
    int subtractWallet(Long userId,BigDecimal price,Long ordersId,UserConsumeEnum enumType);

    /**
     * 添加商品分享提成
     * @param ordersId
     * @return
     */
    int addOrdersGoodsSharePercentage(Long ordersId);

    /**
     * 重置每日收入
     * @return
     */
    int resetDayPrice();
}
